#pragma once

#include "logger_api.hpp" 
#include "io/rotating_file_writer.hpp"
#include <memory>

class FileSink : public ISink {
public:
    // 构造函数（参数）：文件路径、最大文件大小（字节）、保留文件数量（回滚）
    FileSink(const std::string& filename, size_t max_size, size_t max_files, const std::string& sinkname = "my_file_logger_instance");
    ~FileSink() override;

    void log(LogLevel level, const std::string& formatted_message) override;
    // 格式：用户指定名称 + [文件路径]，确保唯一性（即使logger_name相同，路径不同也区分）
    std::string getName() override { return m_sinkName + "[" + m_filename + "]"; }

private:
    std::string m_filename;
    std::string m_sinkName;
    std::unique_ptr<axon_logger::io::RotatingFileWriter> m_writer;

};
